<?php
class XalbumController extends Zend_Controller_Action
{
	private $_uiVar = array();
	private $_album;

	public function init()
	{
		$this->_uiVar["html"]["title"] = STE_Html::WEBSITE_TITLE;

		try
		{
			$db = Zend_Registry::get("DB");			
			$this->_album = new STE_Album($db);
		} catch (Exception $ex)	{
			echo $ex->getMessage();
		}
	}
	
	function addAction()
	{
		$adminSession = new Zend_Session_Namespace("STE_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimNewAlbumData($formData);
				$errorMessage = $this->_checkNewAlbumData($formData);				
				if (empty($errorMessage))
				{
					$r = $this->_album->insertAlbum($formData['newAlbumName'], 
													  $formData['newAlbumType'],													  
													  $formData["newAlbumFilename"],
													  $formData['newAlbumDescription']);
					if ($r) {						
						echo json_encode(array("code" => 0, "data" => "Thành công. <br />"));
					} else {				
						echo json_encode(array("code" => -98, "data" => "Không thành công. <br />"));
					}
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			} catch (Exception $ex) {
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	function editAction()
	{
		$adminSession = new Zend_Session_Namespace("STE_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimEditAlbumData($formData);
				$errorMessage = $this->_checkEditAlbumData($formData);
				if (!empty($errorMessage)) {				
					echo json_encode(array("code" => -99, "data" => $errorMessage)); return;
				}
				
				// if album cover is not changed
				if(empty($formData['editAlbumFilename'])) {
					$r = $this->_album->updateAlbumNoChangeCover($formData['editAlbumID'], 
																 $formData['editAlbumName'], 
																 $formData['editAlbumDescription']);
					echo json_encode(array("code" => 0, "data" => "Cập nhật thành công."));	return;
				}
				
				// if album cover is changed
				$r = $this->_album->updateAlbum($formData['editAlbumID'], 
												$formData['editAlbumName'], 
												$formData['editAlbumFilename'],
												$formData['editAlbumDescription']);
				if($r) {
					echo json_encode(array("code" => 0, "data" => "Cập nhật thành công."));	
				} else {
					echo json_encode(array("code" => 0, "data" => "Cập nhật không thành công."));
				}
			} catch (Exception $ex) {
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	function removeAction()
	{
		$adminSession = new Zend_Session_Namespace("STE_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimRemoveAlbumData($formData);
				$errorMessage = $this->_checkRemoveAlbumData($formData);
				if (empty($errorMessage))
				{
					$r = $this->_album->deleteAlbum($formData["removeAlbumID"]);					
					if($r) {
						echo json_encode(array("code" => 0, "data" => 'Xóa thành công.'));							
					} else {
						echo json_encode(array("code" => -2, "data" => 'Xóa không thành công.'));
					}
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	function getInfoAction()
	{
		$adminSession = new Zend_Session_Namespace("STE_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$albumID = (int)trim($this->_getParam("id"));
				$album = $this->_album->getAlbum($albumID);
				echo json_encode(array("code" => 0, "data" => $album));
			} catch (Exception $ex)	{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		} else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	public function listAction()
	{
		$adminSession = new Zend_Session_Namespace("STE_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$albumType = $this->_getParam("albumType");
				$from = $this->_getParam("from");
				$numberOfAlbums = $this->_getParam("numberOfAlbums");
				$albums = $this->_album->getAlbumList($albumType, $from, $numberOfAlbums);
				echo json_encode(array("code" => 0, "data" => $albums));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	public function deleteTempFileAction()
	{
		
		try {
			$fileName = $this->_getParam('fileName');
			//echo json_encode(array('fileName' => $fileName)); exit();
			$this->_album->deleteTempFile($fileName);
			echo json_encode(array('code' => 0, 'data' => 'Thành công'));
		} catch (Exception $e) {
			echo json_encode(array('code' => -1, 'data' => $e->getMessage()));
		}
	}
	
	private function _checkNewAlbumData($formData)
	{
		$errorMessage = "";
		if (empty($formData["newAlbumType"]))
			$errorMessage = "- Làm ơn chọn loại album. <br />";
		if (empty($formData["newAlbumName"]))
			$errorMessage = "- Làm ơn nhập tên album. <br />";
		if(empty($formData["newAlbumFilename"]))
			$errorMessage = "- Làm ơn chọn ảnh đại diện. <br />";
		return $errorMessage;
	}
	
	private function _trimNewAlbumData($formData)
	{
		$formData["newAlbumType"] = trim($formData["newAlbumType"]);
		$formData['newAlbumName'] = trim($formData['newAlbumName']);
		$formData['newAlbumFilename'] = trim($formData['newAlbumFilename']);
		$formData['newAlbumDescription'] = trim($formData['newAlbumDescription']);
		return $formData;
	}
	
	private function _checkEditAlbumData($formData)
	{
		$errorMessage = "";
		if (empty($formData["editAlbumName"]))
			$errorMessage = "- Làm ơn nhập tên album. <br />";		
		return $errorMessage;
	}
	
	private function _trimEditAlbumData($formData)
	{
		$formData["editAlbumID"] = trim($formData["editAlbumID"]);
		$formData["editAlbumName"] = trim($formData["editAlbumName"]);
		$formData["editAlbumFilename"] = trim($formData["editAlbumFilename"]);		
		return $formData;
	}
	
	private function _checkRemoveAlbumData($formData)
	{
		$errorMessage = "";
		if (empty($formData["removeAlbumID"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";
		return $errorMessage;
	}
	
	private function _trimRemoveAlbumData($formData)
	{
		$formData["removeAlbumID"] = trim($formData["removeAlbumID"]);
		return $formData;
	}
	
	private function _formatVNDate($date)
	{
		$dateObj = new Zend_Date($date, 'YYYY-MM-dd HH:mm:ss');
		return $album['create_date'] = $dateObj->toString('dd-MM-YYYY HH:mm:ss');
	}
	
	private function _getFileNameFromFilePath($filePath)
	{
		return substr($filePath, strrpos($filePath, '/') + 1);
	}
}


